/** ==========================公共函数Begin========================== **/

/**
 * 是否显示错误信息
 */
var _isShowErr = true;

/**
 * 数据加载框默认提示语
 */
var _loadingTip = "数据加载中，请稍侯...";

/**
 * Jquery请求默认超时时间（单位：毫秒）
 */
var _timeOut = 10000;

/**
 * 编辑/查看操作
 * @param options
 *   参数说明：
 *   data            请求参数
 *   url             表单提交地址
 *   editBlockName   编辑块名称
 *   callBack        回调
 */
function comm_editInfo(options) {
	if (_isNull(options.editBlockName)) {
		options.editBlockName = "edit_block";
	}

 
	
    $.ajax({
    	cache: false,
    	type: 'post',
    	timeout : _timeOut,
    	url: options.url,
    	data: options.data, 
    	dataType: 'html',
    	error: function(request) {
    		//_hideLoading();
    		//if (_isShowErr) {
    		//	showPopBox(0, "出错了！");
    		//}
    		alert(request);
    	},
    	success: function(response) {
    		//_hideLoading();
    		//if(isJson(response)){                    
	    	//	var rsp=eval("(" + response + ")"); 
	    	//	showPopBox(0,rsp.message,rsp.callBack,rsp.onClose);
    		//	return;
    		//}
    		_setHtml(options.editBlockName, response);
    		if (options.callBack != null && options.callBack != "") {
				options.callBack(response);
			}
    	},
		complete : function(XMLHttpRequest, status){ 
			//请求完成后最终执行参数
	　　　　if(status == 'timeout') {
			  	//超时,status还有success,error等值的情况
	 　　　　　 	ajaxTimeoutTest.abort();
	 　　　　　 //	_hideLoading();
	  			if (_isShowErr) {
	　　　　　  		alert("请求超时");
	　　　　　  	}
	　　　　}
	　　}
    });
}
/**
 * 判断返回的是json格式数据
 * @param response
 * @returns
 */
function isJson(response){
	return response.match("^\{(.+:.+,*){1,}\}$");
}

/**
 * 保存操作
 * @param options
 *   参数说明：
 *   formId             表单ID
 *   url                表单提交地址
 *   isShowSuccessMsg   是否显示成功提示框
 *   successMsg         成功提示语
 *   callBack           回调
 */
function comm_saveInfo(options) {
	if (_isNull(options.isShowSuccessMsg)) {
		options.isShowSuccessMsg = false;
	}
	if (_isNull(options.successMsg)) {
		options.successMsg = "保存成功！";
	}
	
	_showLoading();
	
	var mytimeout=_timeOut;
	if (_isNull(options.timeout)) {
	}else{
		mytimeout=options.timeout;
	}	
	$.ajax({
    	cache: false,
    	type: 'post',
    	timeout : mytimeout,
    	url: options.url,
    	data: $('#' + options.formId).serialize(),
    	dataType: 'json',
    	error: function(request) {
    		_hideLoading();
    		if (_isShowErr) {
    			showPopBox(0, "出错了！");
    		}
    	},
    	success: function(jsonRst) {
    		_hideLoading();
    		if (options.callBack != null && options.callBack != "") {
				options.callBack(jsonRst);
			}else{
	    		if (jsonRst.result=="sucess") {
	    			if (options.isShowSuccessMsg) {
	    				alert(options.successMsg);
	    			}
	    		} else {
	    			var msg = jsonRst.message != null && jsonRst.message != "" ? jsonRst.message : "保存失败！";
	    			showPopBox(0,msg,jsonRst.callBack,jsonRst.onClose);
	    		}
			}
    	},
		complete : function(XMLHttpRequest, status){ 
			//请求完成后最终执行参数
	　　　　if(status == 'timeout') {
			  	//超时,status还有success,error等值的情况
	 　　　　　 	ajaxTimeoutTest.abort();
	 　　　　　 	_hideLoading();
	  			if (_isShowErr) {
	　　　　　  		alert("请求超时");
	　　　　　  	}
	　　　　}
	　　}
    });
}


/**
 * 展现加载框
 */
function _showLoading() {
	//CX.UV.Loading.show(_loadingTip, 1);
}

/**
 * 隐藏加载框
 */
function _hideLoading() {
	//CX.UV.Loading.hide();
}

/**
 * 删除操作
 * @param options
 *   参数说明：
 *   data               请求参数
 *   confirm            确认语示语
 *   url                表单提交地址
 *   callBack           回调
 */
function comm_deleteInfo(options) {
	if (_isNull(options.confirm)) {
		options.confirm = "确定删除？";
	}
	
	var title = '确定删除';
	var	message = options.confirm;
	if (confirm(message)) {
			$.ajax({
		    	cache: false,
		    	type: 'post',
		    	timeout : _timeOut,
		    	url: options.url,
		    	data: options.data,
		    	dataType: 'json',
		    	error: function(request) {
		    		_hideLoading();
		    		if (_isShowErr) {  
		    			showPopBox(0, "出错了！");
		    		}
		    	},
		    	success: function(jsonRst) {
		    		_hideLoading();
		    		if (jsonRst.status=="success") {
		    			 
		    			if (options.callBack != null && options.callBack != "") {
		    				options.callBack(jsonRst);
		    			}
		    		} else {
		    			var msg = jsonRst.message != null && jsonRst.message != "" ? jsonRst.message : "删除失败！";
		    			showPopBox(0,msg,jsonRst.callBack,jsonRst.onClose);
		    		}
		    	},
				complete : function(XMLHttpRequest, status){ 
					//请求完成后最终执行参数
			　　　　if(status == 'timeout') {
					  	//超时,status还有success,error等值的情况
			 　　　　　 	ajaxTimeoutTest.abort();
			 　　　　　 	_hideLoading();
			  			if (_isShowErr) {
			　　　　　  		alert("请求超时");
			　　　　　  	}
			　　　　}
			　　}
		    });
	}
	
}

/**
 * 上/下移操作
 * @param options
 *   参数说明：
 *   data               请求参数
 *   confirm            确认语示语
 *   url                表单提交地址
 *   callBack           回调
 */
function comm_moveInfo(options) {
	if (_isNull(options.confirm)) {
		options.confirm = "确定上/下移？";
	}
	
	var title = '确认上/下移';
	var	message = options.confirm;
	//if (confirm(message)) {
			$.ajax({
		    	cache: false,
		    	type: 'post',
		    	timeout : _timeOut,
		    	url: options.url,
		    	data: options.data,
		    	dataType: 'json',
		    	error: function(request) {
		    		_hideLoading();
		    		if (_isShowErr) {
		    			//alert(options.url)
		    			showPopBox(0, "出错了！");
		    		}
		    	},
		    	success: function(jsonRst) {
		    		_hideLoading();
		    		//var jsonRst = eval("(" + response + ")"); 
		    		if (jsonRst.status=="success") {
		    			if (options.callBack != null && options.callBack != "") {
		    				options.callBack(jsonRst);
		    			}
		    		} else {
		    			var msg = jsonRst.message != null && jsonRst.message != "" ? jsonRst.message : "上下移失败！";
		    			showPopBox(0,msg,jsonRst.callBack,jsonRst.onClose);
		    		}
		    	},
				complete : function(XMLHttpRequest, status){ 
					//请求完成后最终执行参数
			　　　　if(status == 'timeout') {
					  	//超时,status还有success,error等值的情况
			 　　　　　 	ajaxTimeoutTest.abort();
			 　　　　　 	_hideLoading();
			 　　　　　 	if (_isShowErr) {
			　　　　　  		alert("请求超时");
			　　　　　  	}
			　　　　}
			　　}
		    });
	//}
}

 

 

/**
 * 设置dom的innerHTML
 * 
 * @param target
 *            dom的ID
 * @param html
 *            设置的html内容
 * @return
 */
function _setHtml(target, html) {
	if (target.indexOf('.') != -1) {
		target = target.replace(/\./g, "\\.");
	}
	jQuery("#" + target).html(html);
}

/**
 * 判断是否是空值，空中，或者小于0
 * @param obj           需要判断的值
 * @returns {Boolean}
 */
function _isNull(obj) {
	return (obj == null || obj == undefined || obj == "" || obj <= 0);
}
 
 

/** ==========================公共函数End========================== **/

 

/**
 * 公共提示框
 * @param options
 *   参数说明：
 *   showMask           是否显示遮罩
 *   title              提示框标题
 *   message            提示内容
 *   icoType            左侧图标类型：0 错误，1 成功,  2 一般提示
 */
function showPopBox (_type, _message, _callBack,_onClose) {
	var options = {
		showMask : true,
		message : _message,
		icoType : _type, 
		callBack : _callBack,
		onClose:_onClose
	};
	comm_showPopBox(options);
}

/**
 * 公共提示框
 * @param options
 *   参数说明：
 *   showMask           是否显示遮罩
 *   title              提示框标题
 *   message            提示内容
 *   icoType            左侧图标类型：0 错误，1 成功,  2 一般提示
 *   callBack           回调
 */
function comm_showPopBox (options) {
	if (_isNull(options.showMask)) {
		options.showMask = true;
	}
	if (_isNull(options.icoType)) {
		options.icoType = 2;
	}
	var textColorCls = "";
	if (_isNull(options.title)) {
		if (options.icoType == 0) {
			options.title = "出错了";
			textColorCls = "text_error";
		} else if (options.icoType == 1) {
			options.title = "成功了";
			textColorCls = "text_succ";
		} else if (options.icoType == 2) {
			options.title = "温馨提示";
		} else {
			options.title = "提示";
		}
	}
	_popBoxCallBack = options.callBack;
	alert(options.message);
 
}


/**
 * 默认目录树设置变量
 */
var _treeSetting = {
	view: {
			showIcon: false,
    		showLine: false
		},
	data: {
		simpleData: {
			enable: true,
			idKey: "id",  
            pIdKey: "pId"
		}
	},
  	callback: {
        //ztree v3.x版本 文档详见： http://www.ztree.me/v3/api.php (只使用ztree的core核心包) 
        onClick: function(event, treeId, treeNode, clickFlag){   
          	var zTreeObj = $.fn.zTree.getZTreeObj(treeId);
          	var $target = $(event.target || event.srcElement);
          	
          	//添加高亮样式
          	$('#'+treeId).find('li.highLight').removeClass('highLight');
          	$target.parents('li:first').addClass('highLight');
			
          	//设置单击展开节点
          	treeNode.isParent && zTreeObj.expandNode(treeNode, !treeNode.open);
        }
  	}
};

/**
 * 目录树节点删除事件
 * @param sids
 * @param jumpUrl
 */
function doTreeNodeDelete(sids,deleteUrl, jumpUrl,confirmMsg) {
	if (sids == null || sids == "") {
		alert($("#_errMsg").val());
		return false;
	}
	
	var options = {
		url : deleteUrl,
		data : {"id": sids}, 
		confirm : confirmMsg,
		callBack : function(jsonRst) {
			//var jsonRst = eval("(" + response + ")"); 
			 
			if (jsonRst.status=="success") {
				if (jumpUrl != null && jumpUrl != "") {
					window.location.href = jumpUrl;
				}
      		} else {
      			showPopBox(0, "出错了！");
      		}
		}
	};
	comm_deleteInfo(options);
}


/**
 * 目录树节点上/下移事件
 * @param upside         1:上移   0:下移
 * @param sid              当前节点SID
 * @param confirm          确认提示语
 * @param jumpUrl          上下移成功后跳转地址
 */
function doTreeNodeMove(upside, sid, _moveUrl, jumpUrl) {
	var msg = "";
	if (upside == 1) {
		msg = "上移";
	} else if (upside == 0) {
		msg = "下移";
	} else {
		showPopBox(0, "参数错误！");
		return false;
	}
	
	if(_isNull(sid)){
		showPopBox(0, "请先选择想要"+msg+"的数据！");
		return false;
	}
	
	//if (_isNull(confirm)) {
	//	confirm = "确定" + msg + "当前记录？";
	//}
	
	var options = {
		url : _moveUrl,
		data : {"id": sid, "upside": upside}, 
		callBack : function(jsonRst) {
			//var jsonRst = eval("(" + response + ")"); 
			if (jsonRst.status=="success") {
				if (jumpUrl != null && jumpUrl != "") {
					window.location.href = jumpUrl ;
				}
      		} else {
      			showPopBox(0, "出错了！");
      		}
		}
	};
	comm_moveInfo(options);
}

/**
 * 目录树取消新增事件
 * @param treeId
 */
function doTreeCancelAdd(treeId,pId) {
	var treeObj = $.fn.zTree.getZTreeObj(treeId);
	var nodes = treeObj.getSelectedNodes();
	if (nodes != null) {
		var node = nodes[0];
		if (node != null && node.id != null) {
			doEditTree(node.id, pId);
		} else {
			doEditTree('', pId);
		}
	}
}
 

/** ==========================共性公共函数End========================== **/